// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

// ============================== 导出混合 ============================== //

export default (path = '', AddName) => {
  const PRE = path ? `${path.replace('/', '_')}_` : ''

  const EditName = AddName.replace(/^Add/, 'Edit')

  return {
    /**
     * 混入列表 (配置选项合并)
     */
    mixins: [CORE.mixWeb(path, PRE)],

    /**
     * 监听属性 (深度 deep 首次 immediate)
     */
    watch: {
      /**
       * 监听全局新增
       */
      [`CORE.WATCH.${AddName}`](changed) {
        changed && this.refreshList(1)
      },

      /**
       * 监听全局修改
       */
      [`CORE.WATCH.${EditName}`](changed) {
        changed && this.refreshList()
      },
    },

    /**
     * 本地方法 (轻量重要在前)
     */
    methods: {
      /**
       * 打开新增弹窗
       */
      async windowAdd(data) {
        CORE[`open${AddName}`](data)
      },

      /**
       * 刷新列表
       */
      refreshList(page) {
        if (this[`${PRE}MAIN_START`] === 'startList') {
          this[`${PRE}param`].idList = this[`${PRE}param`].rowList = [] // 清空多选
          this[`${PRE}startList`](page)
        }
      },
    },
  }
}
